Selamat datang di Perpindahan Besar. Dalam pemrograman CPU, kita menentukan bagaimana untuk melakukan iterasi; dalam GPGPU, kita menentukan apa iterasi terlihat seperti apa. Perubahan dari logika berbasis instruksi menjadi logika berbasis data didukung oleh Abstraksi Kernel.
1. Rancangan __global__
Dengan menggunakan __global__ kualifikasi, Anda tidak sedang menulis fungsi—Anda sedang merancang rancangan yang dapat diskalakan. Eksekusi kernel tunggal mewakili satu unit kerja mandiri, memungkinkan GPU mengatur ribuan tugas identik melintasi jumlah inti yang sangat besar tanpa manajemen thread secara manual.
2. Resolver Alamat Global
Bagaimana satu thread di antara jutaan menemukan targetnya? Ia menggunakan kontrak pasti yang dikenal sebagai rumus pengindeksan:
$$\text{IDThread} = \text{blockIdx.x} \times \text{blockDim.x} + \text{threadIdx.x}$$
Rumus ini bertindak sebagai sistem koordinat, menghubungkan data logis perangkat lunak (larik) dengan hierarki fisik perangkat keras (blok dan thread).
3. Konfigurasi Eksekusi
Parameter <<<B, T>>> menentukan bentuk kisi. Ini menjamin Skalabilitas Transparan: kode Anda menjalankan logika yang sama, baik perangkat keras memiliki 2 SM atau 80 SM.